import type { PointOptions } from '@/hooks/useCesiumPoints';

export interface moduleInfo {
  id?: number; // 站点唯一ID
  name: string; // 站点名称(如'门站')
  clickStatus?: boolean; // 点击状态(用于UI交互)
  value?: number | string; // 站点关联的数值或字符串
  className?: string; // 站点样式类名
  unit?: string; // 单位
  currentClass?: string;
  activeClass?: string;
  fontClass?: string;
  pic?: string;
  type?: string;
  list?: PointOptions[]; // 该站点包含的地理坐标点数组
  [key: string]: any;
}

/**
 * 将后端数据映射到管线信息结构
 * @param PipeLineInfoArray 原始管线信息数组
 * @param backendData 后端返回的数据
 * @param mapData
 * @returns 处理后的管线信息数组
 */
export const mapBackendData = (PipeLineInfoArray: moduleInfo[], backendData: any, mapData: Record<string, any>): moduleInfo[] => {
  type mapName = keyof typeof mapData;
  return PipeLineInfoArray.map((item) => {
    const mapping = mapData[item.name as mapName]; // 获取当前管线的映射配置
    if (!mapping) return item; // 如果没有匹配的映射配置，返回原数据

    // 返回新对象，合并原有属性和后端数据
    return {
      ...item,
      value: backendData[mapping.countKey] ?? 0, // 使用空值合并运算符设置默认值
      list: mapping.dataKey ? backendData[mapping.dataKey] : undefined // 同上
    };
  });
};
